<?php
/* --------------------------------------------------------------
   GMJanolaw.php 2010-06-08 gambio
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2010 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/


class GMJanolaw 
{
	var $m_user_id = false;
	var $m_shop_id = false;
	
	var $m_cache_seconds = 7200; # 2hours
	
	function GMJanolaw() 
	{ 
		$this->m_user_id = xtc_cleanName(MODULE_GAMBIO_JANOLAW_USER_ID);
		$this->m_shop_id = xtc_cleanName(MODULE_GAMBIO_JANOLAW_SHOP_ID);
		
    	if($this->get_status() == true) 
    	{
    		# phantom call for creating checkout cache-file
    		$this->get_page_content('widerrufsbelehrung', false, true, 'checkout-widerrufsbelehrung');
    		$this->get_page_content('agb', false, true, 'checkout-agb');
    	}
	}
	
	function get_status()
	{
    	if(defined('MODULE_GAMBIO_JANOLAW_STATUS') == false || MODULE_GAMBIO_JANOLAW_STATUS == 'False')
    	{
    		# module not found or not activated.
    		return false;
    	}
    	# module installed and active
		return true;
	}
	
    function get_page_content($p_page_name, $p_include_mode=true, $p_html_format=true, $p_cache_filename='')
    {
    	if($this->get_status() == false) {
    		return 'Das Janolaw-Modul ist nicht aktiviert.';
    	}
    	
		$c_page_name = xtc_cleanName($p_page_name);
		
		if($p_include_mode) {
			$t_include_mode_suffix = '_include';
		} else {
			$t_include_mode_suffix = '';
		}

		if($p_html_format) {
			$t_format_suffix = 'html';
		} else {
			$t_format_suffix = 'txt';
		}
		
		
		if($p_cache_filename != '')
		{
			$t_cache_file = DIR_FS_CATALOG . 'cache/'. xtc_cleanName($p_cache_filename) .'.'. $t_format_suffix;
		}
		else {
			# build page-specific source path for cache file
			$t_cache_file = DIR_FS_CATALOG . 'cache/'. 
								$this->m_user_id .'-'.
								$this->m_shop_id .'-'.
								$c_page_name.
								$t_include_mode_suffix.'.'.$t_format_suffix;
		}
		
		$t_create_cache = false;		
		
		if(file_exists($t_cache_file) == false) {
			$t_create_cache = true;
		}
		elseif(filesize($t_cache_file) < 100) {
			$t_create_cache = true;
		}
		elseif(filemtime($t_cache_file) < time() - $this->m_cache_seconds) {
			$t_create_cache = true;
		}

		# load page and create cache
		if($t_create_cache)
		{
			# build source url for getting page content
			$t_source_url = 'http://www.janolaw.de/agb-service/shops/'.
								$this->m_user_id .'/'.
								$this->m_shop_id .'/'.
								$c_page_name.
								$t_include_mode_suffix.'.'.$t_format_suffix;
			
			$t_content = '';					
								
			# load page from janolaw site
			if(function_exists('file_get_contents'))
			{
				$t_content = @file_get_contents($t_source_url);
			}
			
			if(empty($t_content) && function_exists('curl_init'))
			{
				$ch = curl_init();
				curl_setopt($ch, CURLOPT_URL, $t_source_url);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
				$t_content = curl_exec($ch);
				curl_close($ch);
			}
			
			# looking for success
			if($t_content != false || strlen($t_content) > 100)
			{
				# write page content to cache file on success
				$fp = fopen($t_cache_file, 'w+');
				fwrite($fp, $t_content);
				fclose($fp);
			}
		}
		
		# use cache file for output
		$t_content = file_get_contents($t_cache_file);
		
		if($p_html_format)
		{
			# append needed css styles
			$t_content = '<style type="text/css">#janolaw-paragraph, #janolaw-footer { margin-top: 20px; } #janolaw-body ol { margin: 8px 4px 4px 8px; } #janolaw-body li { margin: 8px 4px 4px 24px; }</style>' . $t_content;
		}	
			
		# display page content
		return $t_content;
    }
}
?>